Sharing a user-selected video in a group communication

ABSTRACT

A processing device of a mobile device of a first user presents a graphical user interface (GUI) of an application providing group communication between the first user and one or more other users in a group, the GUI comprising a portion to receive a message of the first user for adding to the group communication, and a video sharing GUI element selectable by the first user to find a video to be added to the group communication. The processing device receives, via the GUI, a selection of the video sharing GUI element by the first user. Responsive to the selection of the video sharing GUI element, the processing device presents a plurality of video identifiers of videos having playback associated with the first user. Responsive to a selection of at least one of the plurality of video identifiers of at least one selected video, the processing device causes the at least one selected video to be added to the group communication.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation application of co-pending U.S. patentapplication Ser. No. 15/694,246, filed Sep. 1, 2017, entitled, “SHARINGA USER-SELECTED VIDEO IN A GROUP COMMUNICATION,” which claims thebenefit of priority from U.S. Provisional Application No. 62/509,775,filed on May 23, 2017, and U.S. Provisional Application No. 62/383,305,filed Sep. 2, 2016, which are herein incorporated by reference.

TECHNICAL FIELD

The present disclosure relates to user-to-user communication services,such as group messaging or commenting, and in particular, to creating adirect entry point for insertion of a user-selected video fordistribution to members of a group communication.

BACKGROUND

A group communication on a content sharing service provides a forum fora user to share messages and videos with other participants. Often, auser may wish to share to the group communication a video that the userrecently watched, shared, or liked on the content sharing service.However, in current content sharing services, in order to share such avideo to the group communication, the user should first search for thevideo, then select the video for sharing, and then request that theselected video be added to the group communication. This can be atechnically challenging, cumbersome and time-intensive process that maydiscourage users from sharing and decrease the total number of videosshared and viewed on the content sharing service.

SUMMARY

Aspects and implementations of the present disclosure improveuser-to-user communication, such as group messaging or commenting, byproviding a direct entry point within a group communication that allowsa user to select and share videos from the user's consumption history.In some implementations, a server receives, from a first client deviceassociated with a first user participating in a group communication withclient devices of other users of a content sharing service an indicationof a request of the first user to find a video to be added to the groupcommunication. In response, the server determines, based on consumptionhistory data of the first user, a plurality of video identifiers ofvideos having playback associated with the first user, and sends theplurality of video identifiers to the first client device. The serverthen receives, from the first client device, user input comprising aselection of at least one video identifier of at least one selectedvideo, and an indication of adding the at least one selected video tothe group communication. Further, the server causes the at least oneselected video to be shared with the other users in the groupcommunication, which can allow the other users to play the shared videoon their devices.

In some implementations, a mobile device of a first user presents agraphical user interface (GUI) of an application providing groupcommunication between the first user and one or more other users in agroup. The GUI comprises a portion to receive a message of the firstuser for adding to the group communication, and a video sharing GUIelement selectable by the first user to find a video to be added to thegroup communication. The mobile device can receive, via the GUI, aselection of the video sharing GUI element by the first user, and inresponse, present a plurality of video identifiers of videos havingplayback associated with the first user. Further, responsive to aselection of at least one of the plurality of video identifiers of atleast one selected video, the mobile device can cause the at least oneselected video to be added to the group communication.

BRIEF DESCRIPTION OF THE DRAWINGS

The disclosed embodiments have other advantages and features that willbe more readily apparent from the detailed description and theaccompanying figures. A brief introduction of the figures is below.

FIG. 1 is a block diagram illustrating a system architecture forinsertion of a user-selected video in a group communication, accordingto an embodiment.

FIG. 2 illustrates an example group communication interface in which avideo is shared, according to an embodiment.

FIG. 3 illustrates an example video selection interface, according to anembodiment.

FIG. 4A is an interaction diagram illustrating a method for adding avideo to a group communication, according to an embodiment.

FIG. 4B is a flow diagram of an example server-side method for allowinga user to add a video from the user's consumption history to a groupcommunication between the user and other participants, in accordancewith some implementations of the present disclosure.

FIG. 4C is a flow diagram of an example client-side method for allowinga user to add a video from the user's consumption history to a groupcommunication between the user and other participants, in accordancewith some implementations of the present disclosure.

FIG. 5 is a block diagram illustrating an example computer usable toimplement entities of the video-sharing environment, according to anembodiment.

DETAILED DESCRIPTION

The present disclosure relates to user-to-user group communication, suchas group messaging or commenting. Currently, in order to add a video togroup communication, a user should first search for the video, thenselect a particular video, and then request that the selected video beshared with other users of the group communication. This can be atechnically challenging, cumbersome and time-intensive process(especially for mobile device users) that may discourage users fromsharing videos when participating in group communication.

Aspects of the present disclosure address the above and otherdeficiencies by creating a direct entry point for insertion of auser-selected video for distribution to members of a groupcommunication. In some implementations, in order to enable users of acontent sharing service to select and share videos having playbackassociated with the user, the content sharing service displaysidentifiers of videos from the user's consumption history to the userthrough a content sharing application. Responsive to receiving userinput including a selection of one or more of the videos for adding to agroup communication, the content sharing service transmits to a clientdevice associated with the user an identifier of the one or moreselected videos, and, responsive to receiving user input including aninstruction to share the one or more selected videos, sends theidentifier of the one or more selected videos to the client devices ofthe other users in the group communication.

As a result, the process of sharing a video with participants of groupcommunication is simplified by replacing search operations with aselection operation. This is especially advantageous for mobile deviceenvironments, where performing a searching query no longer requiresopening a different mobile application or providing multiple inputs toswitch between different screens of a mobile application, and whereentering a search query is no longer required, thereby replacing aconventional process that is inconvenient and time-consuming due to alimited screen size and a small keyboard.

FIG. 1 is a block diagram illustrating a system architecture of anembodiment of a content sharing service 100. Examples of content sharingservices are video services, social messaging services, multi-mediamessaging services, gaming services, music sharing services, and photosharing services. The system is scalable to accommodate multiple usersthat use clients 150 to interact with the content sharing service 100.While only one client 150 is shown, it is understood that very largenumbers (e.g., millions) of clients 150 are supported and can be incommunication with the content sharing service 100 at any time.

The client 150 includes the content sharing application 160 downloadedthrough the network 180, which is typically the Internet, but can alsobe any network, including but not limited to any combination of a localarea network (LAN), a metropolitan area network (MAN), a wide areanetwork (WAN), a mobile, wired, or wireless network, a private network,or a virtual private network. In another embodiment, the content sharingapplication 160 is pre-loaded on the client 150 such that the user ofthe client 150 need not download the content sharing application 160.The client 150 uses the content sharing application 160 to interact withdigital content items (e.g., video files, audio files, photos, etc.) andcan connect to the server 110 of the content sharing service 100 via thenetwork 180. The client 150 may include a variety of different computingdevices. Examples of clients 150 can include personal computers, digitalassistants, personal digital assistants, cellular phones, mobile phones,smart phones, laptop computers, etc.

Examples of content sharing application 160 are video sharingapplications, social messaging applications, multi-media applications,gaming applications, and music sharing applications, and photo sharingapplications. The content sharing application 160 allows for groupcommunication and can include a client communication module 165 and avideo sharing module 170. Group communication refers to exchange ofmessages between multiple members of a group, where the messages areincluded in a thread (e.g., a chronological stream of posts) visible tothe members of the group, and can be, for example, part of a public orprivate group chat or a public or private comment thread. The messagesmay include different types of content, including, for example, textualcontent, images, audio and/or video content, etc. The clientcommunication module 165 allows the user of the client 150 toparticipate in group communications through the content sharingapplication 160 by transmitting messages from the user to other users inthe group communication and receiving messages from the other users inthe group communication. Examples of technologies for implementing thegroup communication can include Short Message Service (SMS), EnhancedMessage Service (EMS), Multimedia Message Service (MIMS), instantmessaging, social messaging, and email.

The video sharing module 170 facilitates video sharing in the groupcommunication by transmitting video identifiers of videos selected byone or more users to other users of the group communication andreceiving video identifiers of videos shared by other users of the groupcommunication. In some embodiments, the video identifiers comprise soundfiles, images, and/or other kinds of media, or Uniform Resource Locators(URLs) or Uniform Resource Identifiers (URIs) that point to thelocations of such media.

The client 150 also includes a video player 155 that is used for playinga video stream. The video player 155 can be a standalone application, ora plug-in to another application such as a network browser. In oneembodiment, the video player 155 is embedded in the content sharingapplication 160. The video player 155 includes a user interface (UI) andUI controls (and corresponding application programming interfaces) forperforming actions pertaining to a video, such as, selecting a video,controlling playback of a video (e.g., starting, stopping, pausing,forwarding, and rewinding a video), evaluating a video, sharing a video,commenting on a video. The video player 155 can include in its userinterface a video display format selection configured to indicate theapplicable video display format (e.g., a two-dimensional (2D) video or athree-dimensional (3D) video). Other types of user interface controls(e.g., buttons, keyboard controls) can be used as well to control theplayback and video format selection functionality of the video player155.

The content sharing service 100 can be a web server that hosts and/orserves video content items. Alternatively, the content sharing service100 can be a server for mobile applications (“apps”), a gaming systemserver, or the like. Specific examples below that describe the contentsharing service 100 in a particular implementation such as a web serverare not intended to limit the scope of the described disclosure to thatparticular embodiment, but rather to provide examples and context forthe associated description.

As shown in FIG. 1, the content sharing service (also referred to hereinas a content sharing platform) 100 can include a server 110, a videoserving module 115, a video selection module 120, a video filteringmodule 125, a server communication module 130, a video data store (e.g.,video database) 135, and a user database 140. In one embodiment, theserver communication module 130 is independent of the content sharingservice 100. Additionally or alternatively, the server communicationmodule 130 communicates with a third party messaging platform, such as amessaging application on a smartphone. In still other embodiments, thevideo serving module 115, the video selection module 120, the videofiltering module 125, the server communication module 130, the videodatabase 135, and the user database 140 are part of the server 110.

Many additional features, such as firewalls, load balancers, applicationservers, failover servers, site management tools and so forth are notshown so as not to obscure the features of the system. It will beunderstood that the term “website” represents any computer systemadapted to serve content using any internetworking protocols, and is notintended to be limited to content uploaded or downloaded via theInternet or the HyperText Transfer Protocol (HTTP). In general,functions described in one embodiment as being performed on the serverside can also be performed on the client side in other embodiments ifappropriate. In addition, the functionality attributed to a particularcomponent can be performed by different or multiple components operatingtogether.

A server as referred to herein can be implemented as a server programexecuting on a server-class computer comprising a central processingunit (CPU), memory, network interface, peripheral interfaces, and otherwell-known components. The computers themselves preferably run anoperating system such as LINUX, have generally high performance CPUs,several gigabytes of memory, and gigabytes, terabytes, or even petabytesof disk storage. Of course, other types of computers can be used, and itis expected that as more powerful computers are developed in the future,they can be configured in accordance with the teachings here. Thefunctionality implemented by any of the elements can be provided fromcomputer program products that are stored in tangible computer readablestorage media (random access memory (RAM), hard disk, optical/magneticmedia, etc.).

As previously described, a user of the client 150 uses the contentsharing application 160 to connect to the server 110 to play videos andinteract with other content items (e.g., audio files, images, etc.) thathave been provided by content providers. Users of the client 150 cansearch for videos based on keywords or other metadata. These requestsare received as queries by the server 110 and provided to the videoserving module 115, which is responsible for searching the video datastore (e.g., database 135) for videos that satisfy the user queries, andproviding the videos to the users. The video serving module 115 supportssearching on any characteristics of a video, including its title,description, metadata, author, category, and so forth. Alternatively,users can browse videos based on categories such as most viewed videos,sports, animals, or automobiles. For example, the user can browse videosrelated to cars and select which videos to watch. In some embodiments,the user can search for or browse suggested or trending videos, asdetermined by the content sharing service 100. Users can also accessvideos via autoplay or by clicking an advertisement displayed on theuser interface of the content sharing service 100. Other methods forsearching for and locating videos via video serving module 115 may alsobe employed at the discretion of the implementer.

The video selection module 120 allows a user using the client 150 toshare a video with other users in a group communication. The videoselection module 120 provides a direct entry point for the contentsharing application 160 within the communication that allows a user toselect and share a video with other users directly, without having toleave the content sharing application 160 or without having to providemultiple input to switch between different screens of an application. Insome embodiments, this direct entry point includes a video selectioncontrol (also referred to herein as a video sharing GUI element) in thegroup communication interface, selection of which causes the contentsharing application 160 to display a video selection interface.

Responsive to a user in a group communication selecting the videoselection control such as an icon or button displayed in the userinterface of the group communication, the client communication module165 sends an instruction to the video selection module 120 to retrievevideo identifier(s) of video(s) having playback associated with the userto display on the client 150. In one embodiment, videos having playbackassociated with the user include videos in the user's consumptionhistory. Videos in the user's consumption history include videos thatthe user has watched on the content sharing service 100, as well asvideos that the user has liked, shared, or commented on. In someembodiments, the consumption history data includes times of consumptionof videos and/or frequency data indicating, for example, the number oftimes that a user has watched a video and/or the number of times thatthe user has commented on or shared the video.

In one embodiment, the user's consumption history is stored in the userdatabase 140 and updated in response to the user taking an actionassociated with a content item (e.g., commenting on a video, sharing avideo identifier) on the content sharing service 100. In one embodiment,the video selection module 120 queries the user database 140 for theuser's consumption history data responsive to the instruction from theclient communication module 165. Additionally or alternatively, thevideo selection module 120 queries the video database 135 for videosthat are suggested or trending, as determined by the content sharingservice 100.

The user's consumption history data from the user database 140 isprovided to the video filtering module 125, which filters the videosbefore sending them to the video selection module 120 for display to theuser through the video sharing module 170 of the content sharingapplication 160. Additionally or alternatively, the video database 135sends identifiers of the suggested or trending videos to the videofiltering module 125 for filtering. The video filtering module 125applies filtering criteria including, for example, whether the video hasalready been shared to the group communication and whether theparticipants in the group communication have permission to access thevideo. Videos that are filtered out by the video filtering module 125can include pre-roll advertisements and videos that are not shareable bythe user (i.e., none of the participants in the group communication havepermission to access the videos). For example, a user's consumptionhistory might contain a private video to which the user has access, butto which other users in group communication do not. The video filteringmodule 125 queries the server communication module 130 for thepermission settings associated with the user who caused the video to beuploaded to the content sharing service 100. In another embodiment, thevideo filtering module 125 queries the server communication module 130for the permission settings associated with the users participating inthe group chat. Responsive to determining that none of the participantsin the group communication (other than the user) have permission toaccess the private video, the video filtering module 125 notifies theuser via the content sharing application 160 that the user is blockedfrom sharing the private video to the group communication. If, however,the video filtering module 125 determines that some of the participantsin the group communication have permission to access the private video,the video filtering module 125 notifies the user that the private videowill be shared only with those participants who have permission toaccess the video and asking the user whether the user wishes to proceedwith sharing the video with those participants.

The video filtering module 125 also queries the server communicationmodule 130 for the group communication history and filters out videosthat have already been shared in the context. In some embodiments, thevideo filtering module 125 filters out videos that have been sharedwithin a specified time period (e.g., within the last hour, within thelast day, within the last week, etc.). In other embodiments, the videofiltering module 125 filters out videos that have been shared to thegroup communication regardless of when the video was previously shared.

To determine whether a video has already been shared to the groupcommunication, the server communication module 130 searches the groupcommunication history for video identifiers associated with videosstored in the video database 135. If the server communication module 130locates a video identifier for a received video in the groupcommunication history, the server communication module 130 determinesthat the video has already been shared to the group communication andremoves the video from the received videos such that the video is notdisplayed to the user and therefore cannot be shared again in the groupcommunication.

Once the video selection module 120 receives the filtered videos fromthe video filtering module 125, the video selection module 120 generatesthumbnails representing each video, e.g., in list format, forpresentation on a video selection interface and provides the thumbnailsto the video sharing module 170 for review and selection by the user. Insome embodiments, the list includes all videos responsive to the videoparameters (i.e., all videos in the user's consumption history that werenot filtered out by the video filtering module 125). In otherembodiments, the list includes a maximum number of videos determined bythe content sharing service 100 or the user. For example, the user canspecify that he or she only wishes to include the ten most recentlywatched videos. Alternatively, the content sharing service 100 can setthe maximum number of video thumbnails displayed in the list. In eitherembodiment, if the video that the user wishes to share is not includedin the list of thumbnails, the content sharing service 100 gives theuser the option to increase the maximum number of videos displayedand/or to search for the video. In some embodiments, the video selectioninterface includes a search box that allows the user to search for avideo that is not included in the thumbnails displayed on the videoselection page. Responsive to the user inputting search parameters intothe search box, the video serving module 115 identifies searchsuggestions and search results for display by the client on the videoselection interface.

When the user selects a video from the video selection interface, thevideo sharing module 170 displays a draft message including anidentifier of the selected video and offering the user an option to addto the message. The identifier of the selected video that is included inthe draft message can be the same video identifier (e.g., a thumbnail)that was displayed to the user for selection (e.g., in the thumbnaillist). Alternatively, the identifier of the selected video that isincluded in the draft message can be in a different format than thevideo identifier (e.g., a thumbnail) that was displayed to the userprior to the selection (e.g., in the thumbnail list), and can be, forexample, in the form of a playable thumbnail (as opposed to a staticimage thumbnail), a minimized video, a video preview, etc. Such anidentifier that has a different format than video identifiers displayedprior to the user selection is referred to herein as a distributionidentifier.

When the user activates the send button of the content sharingapplication 160, the video sharing module 170 transmits the identifier(e.g., the video identifier or the distribution identifier) of theselected video along with the message to the client devices 150 of theusers in the group communication. The client devices 150 associated withthe users in the group communication can use the received identifier torequest the selected video from the video database 135. In oneembodiment, the user selects two or more videos from the video selectioninterface.

The server communication module 130 provides the group communication fordisplay on the client device 150 and monitors permission settings foreach member of the group communication. For example, assume that a userof the content sharing service 100 caused a video to be uploaded to thecontent sharing service 100 and set privacy settings for the video tolimit access to the uploaded video to other users of the content sharingservice 100 who are connected to the posting user. If the posting useror another user connected to the posting user shared the video to agroup communication, members of the group communication who are notconnected to the posting user will not be able to view the video. In oneembodiment, permission settings for users of the content sharing service100 are stored in the user database 140.

In some implementations, responsive to determining that a user of thegroup communication does not have access to a video previously shared inthe group communication, the server communication module 130 replacesthe shared video with a placeholder image on the client devicesassociated with those users who do not have access to it. For example, auser might join a group communication in which other users have alreadyshared videos and have access to the entire conversation. While theother users in the group communication had permission to access thepreviously shared videos, the new user might not. If the new user doesnot have permission to access a previously shared video, the servercommunication module 130 replaces the shared video with a placeholderimage for the user.

In another embodiment, the server communication module 130 notifies aposting user whether the other users in the group communication havepermission to access the video before the video is shared to the groupcommunication. For example, assume that there are four users in a groupcommunication and that user A wishes to share a video that he or she haspermission to access. Responsive to user A selecting a video to share tothe group communication, the server communication module 130 notifiesthe user through the content sharing application 160 that user B haspermission to access the video and that users C and D do not havepermission to access the video. In some embodiments, the servercommunication module 130 displays thumbnails representing videos fromuser A's consumption history that all members of the group communicationhave permission to access.

In some embodiments, the server communication module 130 sends a messageto the content owner associated with the video requesting that thecontent owner expand the permissions to allow the new user to access thevideo. If the content owner grants the new user permission to access thevideo, the server communication module 130 does not replace the videowith a placeholder image.

The video database 135 stores video files and associated metadataprovided by content owners. Each uploaded video is assigned a videoidentifier (ID) when it is processed. In addition to the video ID, thevideo files have associated metadata such as artist, video title, label,genre, time length, and geo-restrictions that can be used for datacollection or content blocking on a geographic basis. More or feweritems of metadata can be associated with video files at the discretionof the implementer. In some embodiments, the video database 135 alsostores identifiers of suggested or trending videos, as determined by thecontent sharing service 100.

The user database 140 maintains a record of registered users of thecontent sharing service 100. Registered users include content providersand/or users that consume (e.g., play) and interact (e.g., share, rate,comment, etc.) with videos on the content sharing service 100, ratherthan upload videos to the content sharing service 100. A user canregister account and/or credential information, including, for example,login name, e-mail address, and password with the content sharingservice 100. This account and/or credential information is stored in theuser database 140. The user database 140 also stores, for eachregistered user of the content sharing service 100, permission settingsindicating content items or categories of content items that the userdoes and does not have permission to access.

For each registered user of the content sharing service 100, the userdatabase 140 also stores consumption history data. A user's consumptionhistory data includes identifiers of videos that the user watched on thecontent sharing service 100, as well as videos that the user has liked,shared, or commented on. In some embodiments, the consumption historydata includes frequency data indicating, for example, the number oftimes that the user has watched a video and/or the number of times thatthe user has commented on or shared the video.

In one embodiment, the consumption history data includes identifiers ofvideos that the user has watched to completion. In other embodiments,the consumption history data includes identifiers of videos that theuser watched for a specified period of time or to a specified percentageof completion.

In situations in which the systems discussed herein collect personalinformation about users, or may make use of personal information, theusers may be provided with an opportunity to control whether programs orfeatures collect user information (e.g., information about a user'ssocial network, social actions or activities, profession, a user'spreferences, or a user's current location), or to control whether and/orhow to receive content from a content server that may be more relevantto the user. In addition, certain data may be treated in one or moreways before it is stored or used, so that personally identifiableinformation is removed. For example, a user's identity may be treated sothat no personally identifiable information can be determined for theuser, or the user's geographic location may be generalized wherelocation information is obtained (such as to a city, zip code, or statelevel), so that a particular location of a user cannot be determined.Thus, the user may have control over how information is collected aboutthe user and used by a content server.

FIG. 2 illustrates an example of a group communication interface 205 inwhich a video is shared in the group communication, according to someimplementations. Other users in the group communication can play thevideo, write a reply to the video, or select another video for sharingin the group communication.

The group communication interface includes the shared video 210, anotification 215 that a user in the group communication shared thevideo, a display bar 220 showing identifiers of at least some of themembers of the group communication, and a message box 225 allowing theuser to reply to the shared video. For example, in FIG. 2, a user“Duncan632” has shared a video to the group communication containingusers identified as “Peter16,” “Lauren1213,” and “MariaB.” While theidentifiers of only three other users participating in the groupcommunication are displayed on the group communication interface, thegroup communication can contain very large numbers of users of thecontent sharing service. Below the display bar is a notification thatuser “Duncan632” has shared a video to the group communication as wellas the user's name and the date that the user shared the video.

In the example in FIG. 2, a frame from the shared video is displayed andis overlaid by user interface (UI) elements indicating the total time ofthe video 230 and giving the user the option to begin playback 235 orexpand the video into full screen mode 240. The UI can include metadata,such as the title 245 and content provider 250 of the video as well asthe message box 225 allowing the user to prepare a message.

The group communication interface includes a video sharing GUI element(e.g., video selection icon) 255, for example, in the message box.Responsive to a user selecting the video sharing GUI element 255, theclient communication module 165 sends an instruction to the videoselection module 120 to retrieve a video identifier(s) of video(s)having playback associated with the user to display on the client 150,as discussed above.

FIG. 3 illustrates an example video selection interface, according tosome embodiments. The video selection interface includes a drop-downmenu 305 allowing the user to select from among a plurality of videoidentifiers 310 of recently watched videos (e.g., videos recentlywatched by the viewing user), suggested videos (e.g., recommended videosnot previously watched by the viewing user), or trending videos (e.g.,popular videos not recently watched by the viewing user), as determinedby the content sharing service 100. In FIG. 3, the video selectioninterface displays identifiers of the user's recently watched videos. Inone implementation, before being displayed on the video selectioninterface the videos were filtered by the video filtering module 125,such that the displayed identifiers include only videos that areshareable by the user (i.e., videos that at least some participants inthe group communication have permission to access), and that have notalready been shared in the group communication. The video selectioninterface also includes a search box 315, allowing the user to searchfor a video that is not included in the thumbnails displayed in thevideo selection GUI to share in the group communication.

As shown in FIGS. 2 and 3, aspects of the present disclosure provide amechanism for replying to an existing group communication with a videofrom a user's watch history via a video selection operation. The aspectsof the present disclosure can be implemented within a native groupcommunication (e.g., group chat) component of an application such as thecontent sharing application 160, a social networking application, etc.Alternatively, the aspects of the present disclosure can be implementedwithin an independent group communication (e.g., group chat)application.

Aspects of the present disclosure provide a video sharing GUI element(e.g., an icon or a button) 255 that is provided in a portion 225 of agroup communication GUI (e.g., in a reply box presented with the messagethread) of FIG. 2. A user selection of the video sharing GUI element 255leads into a video selection GUI of FIG. 3, where a user can search fora video using a search input area 315, or choose a video from theirwatch history. Aspects of the present disclosure reuse the zero-querystate of the search box 310 by showing identifiers of videos from theuser's watch history instead of using the space 310 to show search querysuggestions or no information. In some implementations, as soon as theuser starts a search operation (e.g., if the user is not satisfied withthe videos from the user's watch history), search suggestions/searchresults are presented in the search box 310 instead of (or in additionto the identifiers of the videos from the user's watch history), therebynot requiring any extra screen space for displaying identifiers ofvideos from the user's watch history.

FIG. 4 is an interaction diagram illustrating a method for adding auser-selected video to a group communication. The server communicationmodule 130 displays 405 a group communication to the client 150 throughthe client communication module 165 of the content sharing application160. At 410, the user provides input comprising a request to share avideo though the video sharing module 170. In one embodiment, the userinput comprises selection of a video sharing GUI element such as an iconor button displayed in the user interface of the group communication.Responsive to receiving the user input, the video selection module 120queries 415 the user database 140 for identifier(s) of video(s) havingplayback associated with the user, as discussed above. At 420, the userdatabase 140 sends the user consumption history to the video filteringmodule 125 for filtering.

The video selection module 120 also queries 425 the video database 135for trending or suggested videos, as determined by the content sharingservice 100. The video database 135 retrieves video identifiers of thetrending or suggested videos and sends 430 the video identifiers to thevideo filtering module 125. At 435, the video filtering module 125queries the server communication module 130 for the group communicationhistory and at 440, the server communication module 130 sends the groupcommunication history to the video filtering module 125.

The video filtering module 125 filters 445 the identifiers of trendingor suggested videos as well as the identifiers of videos from the user'sconsumption history based on filtering criteria, as discussed above. Thevideo filtering module 125 removes pre-roll advertisements and videosthat are not shareable by the user (i.e., videos that none of theparticipants in the group communication have permission to access). Thevideo filtering module 125 also filters out videos that have alreadybeen shared in the group communication.

After filtering the received videos, the video filtering module 125sends 450 the identifiers of the filtered videos to the video selectionmodule 120 for display to the user. The video selection module 120displays 455 thumbnails representing the videos (e.g., in a list format)on the video selection interface through the video sharing module 170.At 460, the client communication module 165 on the client 150 receivesuser input indicating selection of one or more videos on the videoselection interface. Responsive to receiving the user input, the videosharing module 170 displays a draft message including an identifier(e.g., previously presented identifier or a distribution identifier) ofthe selected one or more videos and offering the user to add a textmessage. When the user activates the send button of the video sharingmodule 170, the video sharing module 170 transmits 465 the identifier(e.g., previously presented identifier or distribution identifier) ofthe selected one or more videos along with the user's message to theclient devices 150 of the users in the group communication. The clientdevices 150 associated with the users in the group communication use thereceived identifier to request the selected video from the videodatabase 135.

FIG. 4B is a flow diagram of an example server-side method 470 forallowing a user to add a video from the user's consumption history to agroup communication between the user and other participants, inaccordance with some implementations of the present disclosure. Method470 and each of its individual functions, routines, subroutines, oroperations may be performed by one or more processing devices of thecomputer device executing the method. In certain implementations, method470 may be performed by a single processing thread. Alternatively,method 470 may be performed by two or more processing threads, eachthread executing one or more individual functions, routines,subroutines, or operations of the method. In an illustrative example,the processing threads implementing method 470 may be synchronized(e.g., using semaphores, critical sections, and/or other threadsynchronization mechanisms). Alternatively, the processes implementingmethod 470 may be executed asynchronously with respect to each other.

For simplicity of explanation, the methods of this disclosure aredepicted and described as a series of acts. However, acts in accordancewith this disclosure can occur in various orders and/or concurrently,and with other acts not presented and described herein. Furthermore, notall illustrated acts may be required to implement the methods inaccordance with the disclosed subject matter. In addition, those skilledin the art will understand and appreciate that the methods couldalternatively be represented as a series of interrelated states via astate diagram or events. Additionally, it should be appreciated that themethods disclosed in this specification are capable of being stored onan article of manufacture to facilitate transporting and transferringsuch methods to computing devices. The term “article of manufacture,” asused herein, is intended to encompass a computer program accessible fromany computer-readable device or storage media. In one implementation,method 470 may be performed by content sharing service 100 executed byone or more processing devices of the server(s) 110.

Method 470 may begin at block 472 when a processing device receives,from a first client device associated with a first user participating ina group communication with other users of a content sharing service,user input including a request to find a video to be added to the groupcommunication. The user input may be a selection of a video sharing GUIelement 255 in the GUI of FIG. 2.

At block 474, the processing device determines, based on consumptionhistory data of the first user, video identifiers of videos havingplayback associated with the first user. Such videos may be videoswatched, liked, commented on, etc. by the first user. As discussedabove, these videos may also include trending and/or suggested videos,and the resulting collection of videos can be filtered out based onpermissions of users in the group and/or based on previous videopostings to the group communication. At block 476, the processing devicesends the resulting video identifiers to the first client device.

At block 478, the processing device receives, from the first clientdevice, user input comprising a selection of at least one videoidentifier of at least one selected video, and an indication of addingthe at least one selected video to the group communication. In oneimplementation, the operation of block 478 is performed in response tothe application 160 receiving the user selection of at least oneidentifier of at least one video presented in the video selection GUI ofFIG. 3, presenting the at least one selected video identifier in the GUIof FIG. 2, and receiving a user request to share the video with otherparticipants of the group communication (e.g., upon the user'sactivating the Send button). In another implementation, the operation ofblock 478 involves receiving the at least one selected identifier of theat least one selected video presented in the video selection GUI of FIG.3, providing at least one distribution identifier corresponding to theat least one selected video identifier to the first client device, andreceiving the indication of adding the at least one selected video tothe group communication when the application 160 presents the at leastone distribution identifier of the at least one selected video in theGUI of FIG. 2, and the user submits a request to share the video withother participants of the group communication (e.g., upon the user'sactivating the Send button).

At block 480, processing device causes the at least one selected videoto be shared with the other users in the group communication. In someimplementation, this can involve transmitting, to the client devices ofthe other users, the at least one video identifier of the at least oneselected video or the at least one distribution identifier of the atleast one selected video. When a distribution identifier is used, theprocessing device may also transmit, to the first client device, the atleast one distribution identifier of the at least one selected video, asdiscussed above.

FIG. 4C is a flow diagram of an example client-side method 482 forallowing a user to add a video from the user's consumption history to agroup communication between the user and other participants, inaccordance with some implementations of the present disclosure. Method482 and each of its individual functions, routines, subroutines, oroperations may be performed by one or more processing devices of thecomputer device executing the method. In certain implementations, method482 may be performed by a single processing thread. Alternatively,method 482 may be performed by two or more processing threads, eachthread executing one or more individual functions, routines,subroutines, or operations of the method. In an illustrative example,the processing threads implementing method 482 may be synchronized(e.g., using semaphores, critical sections, and/or other threadsynchronization mechanisms). Alternatively, the processes implementingmethod 482 may be executed asynchronously with respect to each other. Inone implementation, method 482 may be performed by application 160executed by one or more processing devices of a mobile device (clientdevice 150).

Method 482 may begin at block 482 by a processing device presenting, ata mobile device of a first user, a GUI of application 160 providinggroup communication between the first user and one or more other usersin a group. The GUI includes a portion to receive a message of the firstuser for adding to the group communication, and a video sharing GUIelement (e.g., control 255) selectable by the first user to find a videoto be added to the group communication.

At block 486, the processing device receives, via the GUI, a selectionof the video sharing GUI element (control 255) by the first user. Atblock 488, responsive to the selection of the video sharing GUI element,the processing device presents video identifiers of videos havingplayback associated with the first user. As discussed above, the videoidentifiers can be selected by the server based on the first user'sconsumption history and can be identifiers of videos that were watched,liked, commented on, etc. by the first user. As discussed above, thesevideos may also include trending and/or suggested videos, and theresulting collection of videos can be filtered out based on permissionsof users in the group and/or based on previous video postings to thegroup communication. At block 490, the processing device receives aselection of at least one of the plurality of video identifiers of atleast one selected video.

At block 492, the processing device causes the at least one selectedvideo to be added to the group communication. In some implementations,the operation of block 492 involves presenting, responsive to theselection of the at least one video identifier of the at least oneselected video, the at least one video identifier of the at least oneselected video or at least one distribution identifier of the at leastone selected video. The presentation can be in the portion of the GUIthat displays the thread of messages. Upon receiving a user request toshare the at least one selected video with the one or more other users(when the first user activates the send button), the processing devicetransmits, to the server, an indication of sharing the at least oneselected video with the one or more other users. In response, the servertransmits, to mobile devices of the other users, the at least one videoidentifier of the at least one selected video or the at least onedistribution identifier of the at least one selected video forpresentation in the group communication.

The client 150 and the content sharing service 100 are each implementedusing computers. FIG. 5 is a block diagram illustrating an examplecomputer 500 usable to implement entities of the video-sharingenvironment, in accordance with one embodiment. The example computer 500has sufficient memory, processing capability, network connectivitybandwidth, and other computing resources to implement the selection andinsertion of user-selected videos into a group communication asdescribed herein.

The computer 500 includes at least one processor 502 (e.g., a centralprocessing unit, a graphics processing unit) coupled to a chipset 504.The chipset 504 includes a memory controller hub 520 and an input/output(I/O) controller hub 522. A memory 506 and a graphics adapter 512 arecoupled to the memory controller hub 520, and a display 518 is coupledto the graphics adapter 512. A storage device 508, a keyboard 510, apointing device 514, and a network adapter 516 are coupled to the I/Ocontroller hub 522. Other embodiments of the computer 500 have differentarchitectures.

The storage device 508 is a non-transitory computer-readable storagemedium such as a hard drive, compact disk read-only memory (CD-ROM),digital versatile disc (DVD), or a solid-state memory device. The memory506 holds instructions and data used by the processor 502. The processor502 can include one or more processors 502 having one or more cores thatexecute instructions. The pointing device 514 is a mouse,touch-sensitive screen, or other type of pointing device, and in someinstances is used in combination with the keyboard 510 to input datainto the computer 500. The graphics adapter 512 displays media and otherimages and information on the display 518. The network adapter 516couples the computer 500 to one or more computer networks (e.g., thenetwork 180).

The computer 500 is adapted to execute computer program modules forproviding the functionality described herein including presenting mediaand/or metadata generation. As used herein, the term “module” refers tocomputer program logic used to provide the specified functionality.Thus, a module can be implemented in hardware, firmware, and/orsoftware. In one embodiment of a computer 500 that implements thecontent sharing service 100, program modules such as the video servicemodule 115, the video selection module 120, the video filtering module125, and the server communication module 130 are stored on the storagedevice 508, loaded into the memory 506, and executed by the processor502.

The types of computers 500 used by the entities of the video-sharingenvironment can vary depending on the embodiment and the processingpower required by the entity. For example, the client 150 is a smartphone, tablet, laptop, or desktop computer. As another example, thecontent sharing service 100 might comprise multiple blade serversworking together to provide the functionality described herein. Thecomputers 500 can contain duplicates of some components or can lack someof the components described above (e.g., a keyboard 510, a graphicsadapter 512, a pointing device 514, a display 518). For example, thecontent sharing service 100 can run in a single computer 500 or multiplecomputers 500 communicating with each other through a network such as aserver farm.

Aspects of the present disclosure have been described in particulardetail with respect to various embodiments, and those of skill in theart will appreciate that the disclosure can be practiced in otherembodiments. In addition, those of skill in the art will appreciate thefollowing aspects of the disclosure. First, the particular naming of thecomponents, capitalization of terms, the attributes, data structures, orany other programming or structural aspect is not mandatory orsignificant, and the mechanisms to implement the disclosure or itsfeatures can have different names, formats, or protocols. Second, thesystem can be implemented via a combination of hardware and software, asdescribed, or entirely in hardware elements. Third, the particulardivision of functionality between the various system componentsdescribed herein is merely exemplary, and not mandatory; functionsperformed by a single system component can instead by performed bymultiple components, and functions performed by multiple components caninstead be performed by a single component.

Some portions of this description describe the aspects of the disclosurein terms of algorithms and symbolic representations of operations oninformation. These algorithmic descriptions and representations arecommonly used by those skilled in the art to convey the substance oftheir work effectively to others skilled in the art. These operationswhile described functionally computationally or logically are understoodto be implemented by computer programs or equivalent electrical circuitsmicrocode or the like. Furthermore it has also proven convenient attimes to refer to these arrangements of operations as modules withoutloss of generality. The described operations and their associatedmodules can be embodied in software stored on a non-transitorycomputer-readable medium that cause a processor to execute describedfunctions; or in firmware; or hardware; or any combinations thereof.

Embodiments can also relate to an apparatus for performing theoperations herein. This apparatus can be specially constructed for therequired purposes and/or it can comprise a general-purpose computingdevice selectively activated or reconfigured by a computer programstored in the computer. As noted, such a computer program can be storedin a non-transitory tangible computer readable storage medium or anytype of media suitable for storing electronic instructions which can becoupled to a computer system bus. Furthermore any computing systemsreferred to in the specification can include a single processor or canbe architectures employing multiple processor designs for increasedcomputing capability. A general-purpose computer programmed as describedabove thereby becomes a special-purpose computer, adapted to perform thefunctions described here.

Aspects of the disclosure can also relate to a product that is producedby a computing process described herein. Such a product can compriseinformation resulting from a computing process where the information isstored on a non-transitory tangible computer readable storage medium andcan include any embodiment of a computer program product or other datacombination described herein.

Finally, the language used in the specification has been principallyselected for readability and instructional purposes, and it may not havebeen selected to delineate or circumscribe the inventive subject matter.It is therefore intended that the scope of the disclosure be limited notby this detailed description but rather by any claims that issue on anapplication based hereon.

What is claimed is:
 1. A computer-implemented method comprising:receiving an indication of a request of a first user of a plurality ofusers of a service to find a video to be added to a group communicationuser interface (UI) as a message from the first user to other users ofthe plurality of users participating in a group communication, whereinthe group communication represents an exchange of messages between theplurality of users, and wherein the exchanged messages are visible tothe plurality of users in the group communication UI as an orderedstream of posts; responsive to receiving the indication: determining,based on consumption history data of the first user, a plurality ofvideo identifiers of videos having playback associated with the firstuser; and sending the plurality of video identifiers to a first clientdevice of the first user; receiving, from the first client device, userinput comprising a selection of at least one video identifier of atleast one selected video to be added to the group communication UI, theplurality of video identifiers comprising the at least one selectedvideo identifier; and causing the at least one selected video to beshared with the other users in the group communication via apresentation of the at least one selected video in the groupcommunication UI.
 2. The computer-implemented method of claim 1 whereincausing the at least one selected video to be shared with the otherusers in the group communication comprises: transmitting, to the clientdevices of the other users, the at least one video identifier of the atleast one selected video or at least one distribution identifier of theat least one selected video.
 3. The computer-implemented method of claim2 wherein causing the at least one selected video to be shared with theother users in the group communication comprises: transmitting, to thefirst client device, the at least one distribution identifier of the atleast one selected video.
 4. The computer-implemented method of claim 1,further comprising filtering the plurality of video identifiers toremove videos that are not shareable in the group communication.
 5. Thecomputer-implemented method of claim 1, further comprising filtering theplurality of video identifiers to remove videos that have already beenadded to the group communication.
 6. The computer-implemented method ofclaim 1, further comprising: querying a video data store for identifiersof trending or suggested videos; determining a group communicationhistory; and filtering the identifiers of trending or suggested videosto remove videos that are not shareable in the group communication. 7.The computer-implemented method of claim 1, further comprising:receiving user input comprising search parameters for a video;identifying search suggestions and search results responsive to the userinput; and sending the search suggestions and search results to thefirst client device. 8-14. (canceled)
 15. A non-transitorycomputer-readable medium storing computer-executable instructions that,in response to execution, cause a processing device to performoperations, comprising: receiving an indication of a request of a firstuser of a plurality of users of a service to find a video to be added toa group communication user interface (UI) as a message from the firstuser to other users of the plurality of users participating in a groupcommunication, wherein the group communication represents an exchange ofmessages between the plurality of users, and wherein the exchangedmessages are visible to the plurality of users in the groupcommunication UI as an ordered stream of posts; responsive to receivingthe indication: determining, based on consumption history data of thefirst user, a plurality of video identifiers of videos having playbackassociated with the first user; and sending the plurality of videoidentifiers to a first client device of the first user; receiving, fromthe first client device, user input comprising a selection of at leastone video identifier of at least one selected video to be added to thegroup communication UI, the plurality of video identifiers comprisingthe at least one selected video identifier; and causing the at least oneselected video to be shared with the other users in the groupcommunication via a presentation of the at least one selected video inthe group communication UI.
 16. The non-transitory computer-readablemedium of claim 15 wherein causing the at least one selected video to beshared with the other users in the group communication comprises:transmitting, to the client devices of the other users, the at least onevideo identifier of the at least one selected video or at least onedistribution identifier of the at least one selected video.
 17. Thenon-transitory computer-readable medium of claim 15, further comprisingfiltering the plurality of video identifiers to remove at least one of(i) videos that are not shareable in the group communication, or (ii)videos that have already been added to the group communication.
 18. Thenon-transitory computer-readable medium of claim 15, wherein theoperations further comprise: receiving user input comprising searchparameters for a video; identifying search suggestions and searchresults responsive to the user input; and sending the search suggestionsand search results to the first client device.
 19. A system comprising:a memory storing computer-readable instructions; and a processing deviceto execute the computer-readable instructions to perform operationscomprising: receiving an indication of a request of a first user of aplurality of users of a service to find a video to be added to a groupcommunication user interface (UI) as a message from the first user toother users of the plurality of users participating in a groupcommunication, wherein the group communication represents an exchange ofmessages between the plurality of users, and wherein the exchangedmessages are visible to the plurality of users in the groupcommunication UI as an ordered stream of posts; responsive to receivingthe indication: determining, based on consumption history data of thefirst user, a plurality of video identifiers of videos having playbackassociated with the first user; and sending the plurality of videoidentifiers to a first client device of the first user; receiving, fromthe first client device, user input comprising a selection of at leastone video identifier of at least one selected video to be added to thegroup communication UI, the plurality of video identifiers comprisingthe at least one selected video identifier; and causing the at least oneselected video to be shared with the other users in the groupcommunication via a presentation of the at least one selected video inthe group communication UI.
 20. The system of claim 19 wherein causingthe at least one selected video to be shared with the other users in thegroup communication comprises: transmitting, to the client devices ofthe other users, the at least one video identifier of the at least oneselected video or at least one distribution identifier of the at leastone selected video.
 21. The system of claim 19, wherein the operationsfurther comprise filtering the plurality of video identifiers to removeat least one of (i) videos that are not shareable in the groupcommunication, or (ii) videos that have already been added to the groupcommunication.
 22. A computer-implemented method comprising: presenting,at a mobile device of a first user of a plurality of users participatingin a group communication, a group communication graphical user interface(GUI) of an application providing the group communication between thefirst user and one or more other users of the plurality of participatingusers, wherein the group communication represents an exchange ofmessages between the plurality of participating users and wherein theexchanged messages are visible to the plurality of participating usersin the group communication GUI as an ordered stream of posts; receiving,from a server, a plurality of video identifiers of videos havingplayback associated with the first user, the plurality of videoidentifiers being determined based on consumption history data of thefirst user; initiating a presentation, on the mobile device of the firstuser, of the plurality of video identifiers of videos; and responsive toa selection of at least one of the plurality of video identifiers of atleast one selected video, causing the at least one selected video to beadded to the group communication via a presentation of the at least oneselected video in the group communication GUI.
 23. Thecomputer-implemented method of claim 22 wherein causing the at least oneselected video to be added to the group communication comprises:receiving user input comprising the selection of the at least one videoidentifier of the at least one selected video; presenting, in a portionof the group communication GUI on the mobile device of the first user,the at least one video identifier of the at least one selected video orat least one distribution identifier of the at least one selected video;and upon receiving a user request to share the at least one selectedvideo with the one or more other users, transmitting, to the server, anindication of sharing the at least one selected video with the one ormore other users, wherein the server is to transmit, to mobile devicesof the one or more other users, the at least one video identifier of theat least one selected video or the at least one distribution identifierof the at least one selected video for presentation in the groupcommunication GUI.
 24. The computer-implemented method of claim 22,wherein the plurality of video identifiers excludes video identifiers ofvideos that are not shareable in the group communication.
 25. Thecomputer-implemented method of claim 22, wherein the plurality of videoidentifiers excludes video identifiers of videos that have already beenadded to the group communication.
 26. The computer-implemented method ofclaim 22, wherein the plurality of video identifiers are presented in asecond GUI, the second GUI comprising a search GUI element to receiveuser input of one or more search parameters for a video.
 27. Thecomputer-implemented method of claim 26, wherein a subset of theplurality of video identifiers presented in the second GUI comprises oneor more video identifiers of one or more trending or suggested videosthat have not been previously watched by the first user, and wherein thesecond GUI includes a recently watched indicator selectable by the firstuser to sort the plurality of video identifies based on watch time bythe first user.